class B{
public:
virtual void f() const;
};
class D: public B{
public:
virtual void f();
};
위를 컴파일러에게 넘겨줄 경우,
waring: D::f() hides virtual B::f()
경고를 던진다.
B에서 선언된 virtual 함수가 D에서 재정의된 것이 아닌 가려졌다고 경고를 던짐
(virtual로 선언된 함수는 상속한 클래스에서 재정의 해주어야 함)
compiler warning을 무작정 다 없애는 것이 아닌, warning의 뜻을 이해해야 한다.
컴파일러에서 지원하는 최고 경고 수준(g++ -Wall)에서도 경고 메시지를 내지 않고 코딩되는 코드를
작성하도록 노력하자!
컴파일러에 따라서 경고 메시지를 내는 부분이 다름.
컴파일러 경고 수준(gcc)-fsyntax-only: 코드에 오류가 있는지만 확인, 그 이상 수행하지 않음
-fmax-erros=n: 최대 오류 메시지 수를 n으로 제한
-w: 모든 경고 메시지를 금지
-Werror: 모든 경고를 오류로 만듬
-Werror=“지정된 경고”: 지정된 경고를 오류로 만듬
-Wfatal-erros: 발생한 첫 번째 오류에서 컴파일을 중
-Wpendantic
-pendantic : 엄격한 ISO C 및 ISO C++에서 요구하는 모든 경고를 출
력
-pendantic-error: 기준 표준에 따라 오류가 발생
-Wall: 사용자가 의심스럽고 매크로와 관련하여 피하기 쉬운 구성에 대해 모든 경고를 수
행
...